Amazon S3 のアクセス制御やセキュリティ設定が学べるワークショップ「Configuring Amazon S3 security settings and access controls」に参加しました #AWSreInvent #STG309

Amazon S3 のアクセス制御やセキュリティ設定が学べるワークショップ「Configuring Amazon S3 security settings and access controls」に参加しました #AWSreInvent #STG309

Clock Icon2024.12.03

AWS re:Invent 2024 において、Amazon S3 のアクセス制御やセキュリティ設定について学べるワークショップ「Configuring Amazon S3 security settings and access controls」に参加してきました。S3 Access Grants のハンズオンが一番の目的でしたが、S3 の暗号化方式を指定するバケットポリシーについても学べた点もよかったです。

ワークショップの概要

タイトル

  • STG309 | Configuring Amazon S3 security settings and access controls

概要(re:Invent 2024 イベントサイトより抜粋)

Amazon S3 provides security settings and granular access controls to suit virtually any workload. In this workshop, learn how you can manage access and define user and resource-based policies at scale to fit your needs with Amazon S3 access management tools. In addition, learn how you can monitor and audit who is accessing what data, including from where and when. Explore scenarios involving different security requirements, and walk through how you can apply different Amazon S3 tools and capabilities to meet those requirements. You must bring your laptop to participate.

Spekaers

  • Erick Dame, Sr. Solutions Architect, AWS
  • Christie Lee, Principal Solutions Architect, Amazon Web Services

LEVEL

  • 300 – Advanced

ワークショップの流れ

ワークショップの流れはは、S3 のセキュリティベストプラクティスの説明、直近のアップデートの紹介、ワークショップでした。

  1. Amazon S3 のベストプラクティス照会
  2. Amazon S3 の What' New 紹介
  3. ワークショップ

はじめの S3 のベストプラクティスの紹介では、主に次の内容がありました。

  • SSE-KMS による暗号化
  • SRR (Same Region Replication)、CRR (Cross Region Replication)
  • オブジェクトロック、バージョンニング、MFA delete
  • S3 Access Point, S3 Access Grants
  • VPC エンドポイント
  • IAM ポリシーとバケットポリシー
  • ブロックパブリックアクセス
  • AWS Config によるモニタリング
  • IAM Access Analyzer
  • AWS Organizations との連携
    • SCP によるバケットポリシーの強制
    • AWS Control Tower による Preventative ガードレール

その後は S3 のデータアクセスコンセプトの説明です。スケールによって異なるアプローチがあることの説明がありました。上に記載している機能ほどスケールの大きい方法となり、使い分けの説明がわかりやすかったです。

  • S3 Access Gtrants
    • 100,000 grants per region
  • S3 Access Points
    • 10,000 access points per region
  • IAM ポリシーとバケットポリシー

新しい機能の説明としては次のアップデートの紹介がありました。

  • Amazon GuardDuty の S3 マルウェアプロテクション 機能
  • S3 の Conditional Writes 機能
  • いくつかのエラーコードに対して課金しなくなったアップデート
  • Express One Zone の AWS-KMS with custoer managed keys のサポート

ワークショップの内容と学んだこと

ワークショップの目次は次の内容です(Lab 3,4 は時間がなかったため詳細は記載できていないです)。2 時間のワークショップで Lab 1,2 を実施しました。ワークショップ自体は 4 時間の期限でしたので、その後の予定がなければ引き続き実施できるようになっていました。

  • Lab 1 - S3 Security Exercises
    • HTTPS を要求
    • KMS 暗号化
    • VPC エンドポイントへのアクセスを制御
    • Config でパブリックバケット検出
    • Access Analyzer を利用
  • Lab 2 - S3 Access Grants
    • Initial Setup
    • S3 Access Grants for IAM _user
  • Lab 3 - Enable Malware Protection for S3 by using GuardDuty
  • Lab 4 - S3 Access Control Lists

この中で個人的に特に学びにつながったのは、KMS 暗号化と S3 Access Grants の内容です。

KSM 暗号化では、デフォルト暗号化が SSE-KMS の S3 バケットにおいて、"s3:x-amz-server-side-encryption": "aws:kms" を Condition の条件としたバケットポリシーを設定した場合に、クライアント側でオブジェクトの暗号化方法を指定せずにアップロードした場合に失敗することは知りませんでした。

例えば、次のバケットポリシーを指定したとします。SSE-KMS 暗号化をアップロードの条件としています。

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Deny",
		"Principal": "*",
		"Action": "s3:PutObject",
		"Resource": "arn:aws:s3:::BUCKET_NAME/*",
		"Condition": {
			"StringNotEquals": {
				"s3:x-amz-server-side-encryption": "aws:kms"
			}
		}
	}]
}

その場合において、次のコマンドを失敗します。私の想定では、デフォルト暗号化設定が SSE-KMS なので、デフォルトの方式で暗号化され、アップロードが成功するのかなと思っていたのですが、暗号化方式を明示的に SSE-KMS にしない場合はバケットポリシーに合致しないようです。

aws s3api put-object --key text --body textfile --bucket ${bucket}

そのため、次のようなコマンド例でオブジェクトをアップロードする必要があります。aws:kms を明示的に指定しています。

aws s3api put-object --key text --body textfile --server-side-encryption aws:kms --bucket ${bucket}

上記のような内容を丁寧に試しながら学べたので、理解がより深まりました。

もう一つの学びは、S3 Access Grants です。

以前から気になってい機能だったため、この機会にハンズオン形式で学ぶことにしました。自分で一から調べていた場合は、インスタンスとロケーション、アクセス権の要求などの概念の理解に時間がかかっていたと思います。図を交えて説明されていたので、わかりやすかったです。

特に、ワークショップの中でも掲載されていた下記のブログに記載されている図がわかりやすかったです。この図をみてから学習すると効率的に学べると感じました。

reinvent-2024-stg309-1

引用元:Scaling data access with Amazon S3 Access Grants | AWS Storage Blog

ワークショップの手順としては、インスタンスの作成からロケーションの作成、IAM ロール(IAM ユーザー)がアクセスを要求して認証情報の取得により S3 にアクセスするところまでをステップバイステップで構築します。

さいごに

Amazon S3 のアクセス制御やセキュリティ設定が学べるワークショップ「Configuring Amazon S3 security settings and access controls」に参加しました。SSE-KMS 暗号化と S3 Access Grants への理解が深まるワークショップでした。時間が足りず、実施できなかったのですが、ACL に関する内容も気になりました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.